datax添加新数据源的reader和writer

在datax-core中新增数据源常量

exchangis-engines/engines/datax/datax-core/src/main/java/com/alibaba/datax/plugin/rdbms/util/DataBaseType.java中将新数据源类型加入常量中。下面以新增达梦数据库为例

DM("dm", "dm.jdbc.driver.DmDriver");

image-44.png|新增数据源常量|1140x706

新建数据源模块

在datax中,将rdbmsreader模块和rdbmswriter模块复制新建达梦数据库模块
image-45.png|datax结构|681x676

修改名称配置

首先修改pom.xml,将模块名修改为新建的引擎名

<modelVersion>4.0.0</modelVersion>  
<artifactId>datax-dmreader</artifactId>  
<version>3.0.0-Plus-2</version>  
<packaging>jar</packaging>

然后修改assembly文件夹中的package.xml文件,修改打包名称

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">

<id>dmreader</id>

<formats>

<format>dir</format>

</formats>

<includeBaseDirectory>false</includeBaseDirectory>

<fileSets>

<fileSet>

<directory>src/main/resources</directory>

<includes>

<include>plugin.json</include>

<include>plugin_job_template.json</include>

</includes>

<outputDirectory>plugin/reader/dmreader</outputDirectory>

</fileSet>

<fileSet>

<directory>target/</directory>

<includes>

<include>datax-dmreader-${datax.engine.version}.jar</include>

</includes>

<outputDirectory>plugin/reader/dmreader</outputDirectory>

</fileSet>

</fileSets>

<dependencySets>

<dependencySet>

<useProjectArtifact>false</useProjectArtifact>

<outputDirectory>plugin/reader/dmreader/libs</outputDirectory>

<scope>runtime</scope>

</dependencySet>

</dependencySets>

</assembly>

添加datax-assembly中新建达梦模块的打包内容

<fileSet>  
    <directory>../datax-dmreader/target/plugin</directory>  
    <outputDirectory>/</outputDirectory>  
</fileSet>  
<fileSet>  
    <directory>../datax-dmwriter/target/plugin</directory>  
    <outputDirectory>/</outputDirectory>  
</fileSet>

在复制而来的达梦数据库模块中还有部分是关于rdbms的配置的,需要修改,比如将rdbmsreader改为dmreader,RDBMSReader.java文件改为DMReader.java文件。同时文件中关于rdbms的配置也需要修改
private static final DataBaseType DATABASE_TYPE = DataBaseType.RDBMS;修改为private static final DataBaseType DATABASE_TYPE = DataBaseType.DM;
image-46.png|dm模块

在exchangis-job-server和datax-core中添加dm模块的配置

具体参考exchangis中添加不同数据源使用datax进行同步